1. Field of the Invention
This invention relates to methods of supplying information through a network from a host computer to a client program, such as a web browser. More specifically, this invention relates to methods of automatically selecting an appropriate web server computer from among multiple mirrored servers distributed on the Internet to supply web content to a requesting client.
2. Description of Related Art As the Internet grows in popularity, and as web sites increase in complexity of content and sophistication of presentation, many web based enterprises have begun to encounter significant problems relating to the speed of their web service. Currently, most host servers consist of a single machine, which may serve up to several million document requests, received from all over the world, each day. In the vast majority of cases, these enterprises have been observing a steady upward trend in the number of requests received, and a corresponding steady increase in the load upon the web server.
Further, most web enterprises plan to add dynamic content to their site in the near future, or are in the process of doing so already. Such dynamic content might include presenting users with graphical user interface forms containing enter-text-here fields, buttons, check-boxes, pull-down menus, and scrolling lists. The growth of content and improved functionality all lead to increased loads on the host server. For many web sites the load is becoming too great for a single server to carry with acceptable response time.
In addition to overloaded servers, network congestion contributes to the slow response time of popular web sites. When a single host server is used, the network connections leading to that server can become a bottleneck, leading to slow response times, even where the server would otherwise be capable of servicing the entire load.
Upgrading the server machine to a more powerful one, or increasing the network capacity are not long term solutions to these twin problems of slow speed, especially when incremental scalability is desirable. Traditionally, most sites have dealt with the speed problem by replacing the single web server with a cluster of co-located replicated servers. Although this may solve the problem of overloaded servers, it does not help alleviate latency arising as a result of network congestion. Instead, a concept that is becoming increasingly popular, especially with respect to software archives, is to geographically distribute the servers, and create xe2x80x9cmirrorxe2x80x9d sites. Such a distributed architecture results in increased availability of the service in times of network congestion and partial unavailability, and has the potential for increased performance by taking into account topological proximity of clients and servers.
A current difficulty with distributed mirror server designs is that the user must manually select a server from a list of mirror servers. One popular web site offering downloadable web browser software currently offers visitors a choice of over 70 mirror sites, distributed all over the world. However, requiring actual human-user mediation to select a particular mirror server is a relatively crude and invasive technique. Moreover, there is no guarantee that the server chosen by the user will, in fact, be an optimal choice. A choice made on the basis of geographical proximity does not guarantee optimality since, in the context of the Internet, factors such as network traffic and server load can be critical in identifying an xe2x80x9coptimumxe2x80x9d mirror server.
One approach to automating mirror server selection has been based on the Domain Name Server (DNS) system. A DNS approach typically requires that the name server at the server side be modified to respond to translation requests with the IP (Internet Protocol) numbers of different hosts, perhaps in a Round-Robin fashion. As such, client requests are partitioned amongst the various replicated hosts and load is balanced amongst the servers.
There are several problems with this method, however. First, there are usually several intermediate name servers between the client and the Round-Robin DNS, which may cache name-to-IP mapping. The use of such cached results can later create serious load imbalances between the replicated servers. One immediate solution to this problem is to have the Round-Robin DNS specify a time-to-live (TTL) for each resolved name, such that requests made after the specified TTL has expired are not resolved in the local name server, but are instead forwarded to the authoritative DNS which can now return the IP address of the xe2x80x9coptimalxe2x80x9d web server. Nevertheless, multiple HTTP (hypertext transfer protocol) requests made during a given TTL period will continue to be directed to the same web server, causing the problem to resurface.
Making the TTL very small can help mitigate this effect, but comes at the added cost of significantly increased network traffic for name resolution. Furthermore, many name servers may just ignore a TTL which is smaller than some minimum threshold, choosing to default to some value.
Another potential solution to the problem of automated mirror server selection is to use a HTTP redirect approach. In this method HTTP return code URL redirection is used to perform the load balancing. This approach requires a busy server to return the address of another server, instead of the actual response, and then the client is asked to resubmit its request to the new server. However, the redirecting server knows nothing about the current workload of the new server, which is the target of the redirection.
Typically, HTTP redirection is done for moved web pages or a moved web site and is only used for a limited time frame, to allow people who have bookmarked the old location to continue to access the resource. It is not really useful for load balancing purposes because of the lack of knowledge about the workload of the new server, which is the target of the redirection.
Yet another class of solution uses a server side approach in which a server-side routing module redirects all incoming requests to a set of hosts based upon load characteristics. The routing module becomes a centralized authority responsible for selecting one of many clustered servers to service a request. The major drawback with this approach is that the centralized routing module often exhibits itself as a single point of failure, and as a severe performance bottleneck, thus defying the entire purpose of redirection for enhanced availability and rapid response time.
Bearing in mind the problems and deficiencies of the prior art, it is therefore an object of the present invention to provide a method of automatically selecting a mirror server in which small amounts of data transfer and computation are required, as compared to alternative solutions so that a minimum overhead is imposed upon the system.
It is another object of the present invention to provide a method of automatically selecting a mirror server which eliminates the need for a centralized intermediate agent that tracks individual packets passing between clients and servers.
It is a further object of the present invention to provide a method of automatically selecting a mirror server in which a direct connection is established between the client and the server after a close proximity server has been located by the system.
Yet another object of the present invention to provide a method of automatically selecting a mirror server in which a new web server can be easily added to the existing host replica network without having to modify the existing infrastructure in any significant way.
Still another object of the present invention to provide a method of automatically selecting a mirror server in which load balancing is accomplished without problems arise from client or name-server caching.
It is a further object of the invention to provide a method of automatically selecting a mirror server in which the entire replica-selection process is completely transparent to the human-user who is attempting to access- the web site.
Still other objects and advantages of the invention will in part be obvious and will in part be apparent from the specification.
The present invention includes software technology intended to be embedded within the client computer web-browser program and a host server program that responds to initial client computer requests. When a client computer tries to access a uniform resource locator (URL) address, (e.g. http://www.hostserver.com) using a web browser program, the information request is sent to a central host server computer to which the internet protocol (IP) address corresponding to the URL www.hostserver.com resolves.
The central host server responds to the client""s information request by sending a list of IP addresses in addition to the relevant web content, with each IP address corresponding to an available mirror server. Upon receiving this set of IP addresses, the client computer web browser application initiates multiple, concurrently executing threads (xe2x80x9ccalibration appletsxe2x80x9d), each of which corresponds to a (unique) IP address from the received set of mirror server IP addresses.
Subsequently, while the human user is viewing the web content returned by the central host server, each of these applets will, in the background, transparently send identical hypertext transfer protocol (HTTP) mirror server requests to the designated IP addresses of the mirror servers. In turn; the mirror servers will each send a response back to the client computer. The response time will be a function of both the round trip propagation delay through the network and the load on the mirror server. Each calibration applet will measure the round trip latency, i.e., the time elapsed from the sending of the initial mirror server request until a mirror server response is received from the server.
To account for variable delay and sporadic congestion arising from bursty traffic on the Internet, this process is preferably repeated for a specified number of times, and a running average of round trip latency is maintained. The applet program may be configured to discard trial results that appear to be clearly atypical, as inferred from a comparison with other trial results.
Ultimately, the applet with the lowest registered round-trip latency will be identified as the xe2x80x9cwinnerxe2x80x9d, and the browser connects with the replica mirror server site corresponding to the winner applet""s associated IP address for the remainder of its client-host interaction. All further client-host interaction will be optimized and will occur with the particular mirror server selected as the xe2x80x9cwinnerxe2x80x9d applet in the context of the client""s current Internet session.
The entire calibration process is transparent from the client computer user""s point of view. When the client initially attempts to contact a given Internet host, he or she receives the requested web content from the host server program, just as in the conventional model of client-server interaction. However, at the same time, calibration applets will be spawned in the background, invisible to the human user, and these will determine the optimal mirror server (which replicates the initial host server). The human user will be oblivious to the presence of the calibration applets, since he/she will have already received the web content initially requested from the Internet host server specified in the initial information request. Once the optimal mirror server has been identified, all further web content requests made by the client will be sent directly to this mirror server rather than to the central host server. This design allows the present invention to extend the conventional model of client-server interaction, without compromising any of its benefits.
More specifically, the above and other objects and advantages, which will be apparent to one of skill in the art, are achieved in the present invention which is directed to, in a first aspect, a method of selecting a mirror server for client-host interaction over a network comprising the steps of:
a) creating an information request at a client computer,
b) sending the information request over the network from the client computer to a host server,
c) creating a list of mirror servers at the host server,
d) sending a response to the information request, said response being sent from the host server to the client computer over, the network and said response including the list of mirror servers,
e) creating a plurality of mirror server requests at the client computer, each mirror server request corresponding to a mirror server on the list of mirror servers,
f) sending the plurality of mirror server requests over the network from the client computer to the corresponding mirror servers,
g) creating a plurality of mirror server responses to the mirror server requests, each mirror server response being created at one of the corresponding mirror servers responsive to the receipt of one of the mirror server requests,
h) sending the mirror server responses over the network from the corresponding mirror server to the client computer,
i) receiving a plurality of mirror server responses to the mirror server requests from the corresponding mirror servers, and
j) selecting a particular mirror server at the client computer from among the mirror servers responding to the plurality of mirror server requests.
In a preferred embodiment of the invention, the method of selecting a mirror server for client-host interaction over a network includes determining the response time of the mirror servers to the plurality of mirror server requests, ranking the mirror servers according to the response times of the mirror servers, and selecting the particular mirror server at the client computer having the fastest response time.
In another aspect of the invention, the step of creating a list of mirror servers at the host server includes the steps of.
a) creating load status messages at the mirror servers, each load status message containing load information corresponding to the load on the mirror server,
b) sending the load status messages over the network from the mirror servers to the host server, and
c) creating the list of mirror servers at the host server by ranking the mirror servers according to the load information.
In still another aspect of the invention, the step of creating a list of mirror servers at the host server further includes the step of sending load inquiry requests over the network from the host server to the mirror servers, and the step of creating load status messages at the mirror servers comprises creating the load status messages at the mirror servers responsive to the load inquiry requests.
At the host server, it is preferred that the step of creating a list of mirror servers at the host server include continuously maintaining an updated list of load-ranked mirror servers by periodically sending the load status messages from the mirror servers to the host server. The load status messages from the mirror servers to the host server are sent responsive to periodic load inquiry requests from the host server.
At the client computer, it is preferred that the step of creating a plurality of mirror server requests at the client computer includes the steps of:
a) initiating a plurality of calibration applets, each calibration applet corresponding to a mirror server on the list of mirror servers, and
b) creating the mirror server request for each mirror server in the calibration applet corresponding to said mirror server, and the step of sending the plurality of mirror server requests over the network includes sending the mirror server request for each mirror server from the calibration applet corresponding to said mirror server to said mirror server.
The step of sending the plurality of mirror server requests over the network from each calibration applet further includes the step of starting a timer in each applet when the corresponding mirror server request is sent and stopping the timer upon receipt of a response to determine the round trip time.
The step of selecting a particular mirror server at the client computer includes the steps of:
a) reporting the elapsed round trip time from the timers in each calibration applet,
b) ranking the mirror servers corresponding to the calibration applets reporting a round trip time, and
c) selecting the particular mirror server having the lowest reported round trip elapsed time.
In the most highly preferred embodiment, the step of selecting a particular mirror server at the client computer includes the steps of:
a) creating additional mirror server requests in each calibration applet,
b) sending the additional mirror server requests to the mirror server corresponding to the calibration applet creating the additional mirror server requests,
c) timing the round trip time with the timer in each calibration applet for the corresponding mirror server from the sending of each mirror server request to the receipt of each mirror server response,
d) averaging the round trip times in each calibration applet,
e) reporting averaged round trip times from each calibration applet, and
f) ranking the mirror servers corresponding to the calibration applets reporting the averaged round trip times.
The invention also includes a program storage device readable by a machine, tangibly embodying a program of instructions executable by the machine to perform method steps for selecting a mirror server for client-host interaction over a network. The method steps in such instructions include:
a) creating an information request at a client computer
b) sending the information request over the network from the client computer to a host server,
c) creating a list of mirror servers at the host server,
d) sending a response to the information request, said response being sent from the host server to the client computer over the network and said response including the list of mirror servers,
e) creating a plurality of mirror server requests at the client computer, each mirror server request corresponding to a mirror server on the list of mirror servers,
f) sending the plurality of mirror server requests over the network from the client computer to the corresponding mirror servers,
g) creating a plurality of mirror server responses to the mirror server requests, each mirror server response being created at one of the corresponding mirror servers responsive to the receipt of one of the mirror server requests,
h) sending the mirror server responses over the network from the corresponding mirror server to the client computer,
i) receiving a plurality of mirror server responses to the mirror server requests from the corresponding mirror servers, and
j) selecting a particular mirror server at the client computer from among the mirror servers responding to the plurality of mirror server requests.
The invention further includes a computer program product comprising a computer usable medium having computer readable program code means embodied thereon for selecting a mirror server for client-host interaction over a network. The computer program product includes computer readable code means for accomplishing the method steps described above.
In addition to the system wide method described above, the present invention is directed to methods and computer program products embodying such methods for selecting a mirror server at the client computer from among a list of mirror servers supplied by a host server and to methods of providing mirror server information to a client computer by the host server.